var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var member = require('./routes/member');
var memberHospital = require('./routes/memberHospital');
var dictionary = require('./routes/dictionary');
var answersComment = require('./routes/answersComment');
var answers = require('./routes/answers');
var comment = require('./routes/comment');
var collection = require('./routes/collection');
var liked = require('./routes/liked');
var metLive = require('./routes/metLive');
var logs = require('./routes/logs');
var news = require('./routes/news');
var discuss = require('./routes/discuss');
var classroom = require('./routes/classroom');
var users = require('./routes/users');
var province = require('./routes/provice');
var powerMenu = require('./routes/powerMenu');
var powerRole = require('./routes/powerRole');
var powerRoleMenu = require('./routes/powerRoleMenu');
var metSort = require('./routes/metSort');
var metVideo = require('./routes/metVideo');
var memberRespresent = require('./routes/memberRespresent');
var department = require('./routes/department');
var memberCard = require('./routes/memberCard');
var sweepCarnival = require('./routes/sweepCarnival');
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

require('./routes/common_router.js')(app);


app.use('/', routes);
app.use('/member', member);
app.use('/memberHospital', memberHospital);
app.use('/dictionary', dictionary);
app.use('/answersComment', answersComment);
app.use('/answers', answers);
app.use('/comment', comment);
app.use('/collection', collection);
app.use('/liked', liked);
app.use('/news', news);
app.use('/logs', logs);
app.use('/metLive', metLive);
app.use('/discuss', discuss);
app.use('/classroom', classroom);
app.use('/users', users);
app.use('/province', province);
app.use('/powerMenu', powerMenu);
app.use('/powerRole', powerRole);
app.use('/powerRoleMenu', powerRoleMenu);
app.use('/metSort', metSort);
app.use('/metVideo', metVideo);
app.use('/memberRespresent', memberRespresent);
app.use('/department', department);
app.use('/memberCard', memberCard);
app.use('/sweepCarnival', sweepCarnival);


// catch 404 and forward to error handler
app.use(function (req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;
